package sudoku.client.comunicaciones;

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Vector;

import sudoku.client.presen.IVentanaJugador;
import sudoku.server.comunicaciones.IServer;


public class Proxy {
	
	private IVentanaJugador ventanaJugador;

	public Proxy(String nombre, IVentanaJugador ventana) throws MalformedURLException, RemoteException, AlreadyBoundException {
		this.ventanaJugador=ventana;
		this.jugador=new Jugador(nombre, this.ventanaJugador);
	}

    protected IServer server;

    public IServer getServer() {
        return server;
    }

    public void setServer(IServer server) {
        this.server = server;
    }

    public void conectar(String ip, String puerto) throws MalformedURLException, RemoteException, NotBoundException {
        String url="rmi://" + ip + ":" + puerto + "/tableroserver";
        this.server=(IServer) Naming.lookup(url);
    }

    public Vector<String> getTableros(int id) throws Exception {
        return this.server.getTableros(id);
    }
 
	protected Jugador jugador;

	public Jugador getJugador() {
		return jugador;
	}

	public void setJugador(Jugador jugador) {
		this.jugador = jugador;
	}

	public String getTablero(String idTablero) throws Exception {
		return this.server.getTablero(this.jugador, idTablero, this.jugador.getNombre());
	}

	
	public void poner(String id, byte idCuadricula, byte numero, byte fila, byte columna) throws RemoteException {
		this.server.poner(id, idCuadricula, fila, columna, numero);
	}
	
	public void quitar(String id, byte idCuadricula, byte fila, byte columna) throws RemoteException {
		this.server.quitar(id, idCuadricula, fila, columna);
	}

	public void guardarSudoku(String sudoku) throws Exception {
		this.server.guardarSudoku(sudoku);
	}
	public void guardarKenken(String kenken) throws Exception {
		this.server.guardarKenken(kenken);
	}
}
